//Java快读快写模板

import java.util.*;
import java.io.*;
import java.math.*;


public class Main {
    private static int x1 = 0;
    private static int x2 = 0;
    private static int y1 = 0;
    private static int y2 = 0;
    private static int yyy = 0;
    private static int let = 0;
    private static int top = 0;

    public static void main(String[] args) throws IOException {
        Read sc = new Read();
        //从n循环到0  for (int i = n;i>=0; i--)
        //输入a+b+c+d+e+f//int a = sc.nextInt(),b = sc.nextInt(),c = sc.nextInt(),d = sc.nextInt(),e = sc.nextInt(),f = sc.nextInt();
        //输入数组  //int n = sc.nextInt();int[] a=new int[n];for (int i = 0; i < n; i++) {a[i]=sc.nextInt();}
        //IDEA快速生成变量声明的快捷键是 Ctrl + Alt + V。
        //next()方法适用于读取不带空格的单个单词，而nextLine()方法适用于读取包含空格的完整行输入。
        // 范围！！范围！！范围！！范围！！范围！！范围！！范围！！范围！！范围！！范围！！范围！！范围！！
        // Long!涉及大数!的 加乘!都要Long!!!!!!!!!!!!!!!!!超过int的运算至少要一个Long!!!!!!!!!!!!
// ******************************************************************************************************************************************************

        int tttt = sc.nextInt();
        for (int i = 0; i < tttt; i++) {
            int n = sc.nextInt();
            String s= sc.next();
            int k=0;
            boolean b=true;
            while (b) {
                b=false;
                for (int j = 0; j < s.length(); j++) {
                    if (s.charAt(j) == s.charAt(j + 1)) {
                        s=s.substring(0,j)+s.substring(j+2);
                        j++;
                        b=true;
                    }
                }
            }
            System.out.println(s.length()==2?-1:s.length());
        }

        //******************************************************************************************************************************************************
        sc.flush();
        sc.bw.close();
    }
}
//s.substring(0,i)+s.substring(j+1) //String删除i到j
//map.put(  Key  ,  map.getOrDefault(chars[i],0) + 1 );key的值++
//map.getOrDefault(key,0)  如果key存在，返回key对应的值，如果不存在，返回0
//使用contains方法 List，可以用contains方法来判断是否包含特定的字符串 boolean b=stringList.contains(s);
//等比Sn= a1(1-qn)/(1-q)  =(a1-an*q)/(1-q)
//等差Sn= n*a1+n(n-1)/2*d  =n(a1+an)/2
//  倒序List      Collections.reverse(new ArrayList<>());
//优先队列 Queue<String> q = new PriorityQueue<>(new Comparator<String>()规则);默认是小根堆。
//字符串降序排列比较规则 String::compareTo 或 (s1, s2) -> s2.compareTo(s1)
//Integer降序排列比较规则 (a, b)->b-a
//int[]降序排列Arrays.sort(a,(s,b)->b-s);
//str1.compareTo(str2); 返回前减后// 比较字符串的大小compareTo()方法是区分大小写的。如果需要忽略大小写进行比较，可以使用compareToIgnoreCase()方法
//将k四舍五入y位System.out.printf("%."+y+"f\n",k)
//exp()函数，exp(x)=e^x
//立方根 Math.cbrt(n) 平方sqrt()
//分割字符串s.substring()
//GCD方法*最小公约数 BigInteger.gcd(bbb)));
//判断三个整数能否构成一个三角形 if (canFormTriangle(a, b, c));public static boolean canFormTriangle(int a, int b, int c) {return (a > 0 && b > 0 && c > 0) && (a + b > c && a + c > b && b + c > a); }

//取模的数字，别少写(int)1e9+7，inf别写错类型(long)8e18
//初始化数据的时候，最小值不要傻乎乎的默认为0，因为可能有负数
//记住看数字范围，需要开long吗，需要用BigInteger吗，需要手动处理字符串吗，复杂度数量级控制在1e7或者以下了吗
//开数组的数据范围最高不能超过1e7，数据范围再大就要用哈希表离散化了
//基本数据类型不能自定义sort排序，二维数组就可以了，顺序排序的时候是小减大，注意返回值应该是int
//BFS的时候记得在循环里要往队列里push，拓扑排序要确认无环
//“>>”运算的时候，int和long类型得到的数字可能是不同的
class Read {
    BufferedReader bf;
    StringTokenizer st;
    BufferedWriter bw;

    public Read() {
        bf = new BufferedReader(new InputStreamReader(System.in));
        st = new StringTokenizer("");
        bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //什么时候才能持续稳定ak力扣、AcWing呢？
        //什么时候才能ak cf的div2，（div1）呢？才能打div2不计rating呢？
        //什么时候才能ak  abc  arc 不计rating呢？
        //什么时候才能ak 牛客练习赛不计rating呢?
        //什么时候才能ak 洛谷的div2呢？才能打div2不计rating呢？
    }

    //输入部分：

    public String nextLine() throws IOException {
        return bf.readLine();
    }

    public String next() throws IOException {
        while (!st.hasMoreTokens()) {
            st = new StringTokenizer(bf.readLine());
        }
        return st.nextToken();
    }

    public char nextChar() throws IOException {
        //确定下一个token只有一个字符的时候再用
        return next().charAt(0);
    }

    public int nextInt() throws IOException {
        return Integer.parseInt(next());
    }

    public long nextLong() throws IOException {
        return Long.parseLong(next());
    }

    public double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }

    public float nextFloat() throws IOException {
        return Float.parseFloat(next());
    }

    public byte nextByte() throws IOException {
        return Byte.parseByte(next());
    }

    public short nextShort() throws IOException {
        return Short.parseShort(next());
    }

    public BigInteger nextBigInteger() throws IOException {
        return new BigInteger(next());
    }

    public BigDecimal nextDecimal() throws IOException {
        return new BigDecimal(next());
    }

    //以下为输出部分：：

    public void println(int a) throws IOException {
        print(a);
        println();
    }

    public void print(int a) throws IOException {
        bw.write(String.valueOf(a));
    }

    public void println(String a) throws IOException {
        print(a);
        println();
    }

    public void print(String a) throws IOException {
        bw.write(a);
    }

    public void println(long a) throws IOException {
        print(a);
        println();
    }

    public void print(long a) throws IOException {
        bw.write(String.valueOf(a));
    }

    public void println(double a) throws IOException {
        print(a);
        println();
    }

    public void print(double a) throws IOException {
        bw.write(String.valueOf(a));
    }

    public void print(BigInteger a) throws IOException {
        bw.write(a.toString());
    }

    public void print(char a) throws IOException {
        bw.write(String.valueOf(a));
    }

    public void println(char a) throws IOException {
        print(a);
        println();
    }

    public void println() throws IOException {
        bw.newLine();
    }

    //其他调试命令：
    public void flush() throws IOException {
        //交互题分组调试，或者提前退出的情况下可以先运行此语句再推出
        bw.flush();
    }

    public boolean hasNext() throws IOException {
        //本地普通IDE难以使用这个方法调试，需要按照数据组flush，刷新语句:
        //sc.flush()
        //调试完可删去
        return bf.ready();
    }
}
//Trie插入新节点后，下降的命令放在if外面